iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

Quartz 簡介

Quartz是一款功能強大的開源任務排程庫,不論是大型或是小型的Java系統、應用程式,幾乎皆可以整合到其中,Quartz可以創建簡單或複雜的工作排程,暨彈性又準確的執行程式編寫的內容,其開源是使用apache2的憑證,對Spring Boot也有相當高的整合性。

Quartz 的原件

  • JobDetail
  • Job
  • JobBuilder
  • Trigger
  • TriggerBuilder
  • Scheduler

JobDetail:定義任務詳情

最小單位,當觸發器觸發時,程式會去呼叫excute方法做執行,JobDetail是由使用者編寫,並在Job註冊到Scheduler時生成,並且包含Job的狀態訊息(JobDataMap),因此Quartz不儲存Job實例,而是交由JobBuilder定義和建立實例,一個Job可以對應多個Trigger。。

Job:定義任務接口

Job的介面,因此我們可以實現介面來自定義自己的任務,其中JobExecutionContext紀錄上下文的各種訊息,為了避免任務執行還未結束就被再次觸發,可以加上@DisallowConcurrentExecution來解決這個問題。

Trigger:觸發任務執行

用於觸發Job執行,且透過JobDataMap將依些參數傳給Job運行時使用,Quartz預設有多種觸發器,其中以SimpleTrigger和CronTrigger最為經常使用。

Scheduler:用戶與排程器溝通的API

由schedulerFactory建立,負責新增、刪除並列出所有的Job和Trigger

使用心得

Spring Boot 和 Quartz的整合性極高,可以透過pom檔引入套件,並自定義自己的Job Bean和Trigger Bean,Spring會透過DI的方式將Trigger註冊到SchedulerFactoryBean之中產生Scheduler,因此使用上只需要管理自己的Job和Trigger,無須管理其他東西,使開發上更簡潔快速。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

上一篇
[Day15] Spring Boot簡介✖搭配
下一篇
[Day17] Thymeleaf 輕鬆入門
系列文
Google商家大解密就靠網頁設計來加成30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言